package tree

import "fmt"

/**
1、结构创建是在堆上还是在栈上？
不需要知道，编译器会自动选择是在堆上还是栈上分配内存

2、要改变内容必须使用指针接收者
3、结构过大也考虑使用指针接收者
4、一致性：如有指针接收者，最好都是指针接收者

值接收者：是go语言特有
值/指针接收者都可以均可接受值/指针

封装：
1、名字一般使用CamelCase
2、首字母大写：public
3、首字母小写：private


*/
type Node struct {
	Value       int
	Left, Right *Node
}

func CreateNode(v int) *Node {
	return &Node{Value: v}
}

func (node Node) Print() {
	fmt.Println(node.Value)
}
func (node *Node) SetValue(value int) {
	if node == nil {
		fmt.Println("node is nil")
		return
	}

	node.Value = value
}
